home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ADA Programming Guide
/
ADA Programming Guide.iso
/
ada_gnu
/
adainc
/
s-os2syn.ads
< prev
next >
Wrap
Text File
|
1996-01-30
|
7KB
|
195 lines
------------------------------------------------------------------------------
-- --
-- GNU ADA RUNTIME LIBRARY (GNARL) COMPONENTS --
-- --
-- S Y S T E M . O S 2 L I B . S Y N C H R O N I Z A T I O N --
-- --
-- S p e c --
-- --
-- $Revision: 1.4 $ --
-- --
-- Copyright (c) 1993,1994 NYU, All Rights Reserved --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU Library General Public License as published by the --
-- Free Software Foundation; either version 2, or (at your option) any --
-- later version. GNARL is distributed in the hope that it will be use- --
-- ful, but but WITHOUT ANY WARRANTY; without even the implied warranty of --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Gen- --
-- eral Library Public License for more details. You should have received --
-- a copy of the GNU Library General Public License along with GNARL; see --
-- file COPYING. If not, write to the Free Software Foundation, 675 Mass --
-- Ave, Cambridge, MA 02139, USA. --
-- --
------------------------------------------------------------------------------
with Interfaces.C; use Interfaces.C;
with System; use System;
with System.OS2Lib.Threads; use System.OS2Lib.Threads;
package System.OS2Lib.Synchronization is
pragma Preelaborate (Synchronization);
-- Semaphore Attributes
DC_SEM_SHARED : constant := 16#01#;
-- DosCreateMutex, DosCreateEvent, and DosCreateMuxWait use it to indicate
-- whether the semaphore is shared or private when the PSZ is null
DCMW_WAIT_ANY : constant := 16#02#;
-- DosCreateMuxWait option for wait on any event/mutex to occur
DCMW_WAIT_ALL : constant := 16#04#;
-- DosCreateMuxWait option for wait on all events/mutexes to occur
SEM_INDEFINITE_WAIT : constant ULONG := -1;
SEM_IMMEDIATE_RETURN : constant ULONG := 0;
type HSEM is new System.Address;
type PHSEM is access all HSEM;
type SEMRECORD is
record
hsemCur : HSEM;
ulUser : ULONG;
end record;
type PSEMRECORD is access all SEMRECORD;
type HEV is new unsigned_long;
type PHEV is access all HEV;
type HMTX is new unsigned_long;
type PHMTX is access all HMTX;
type HMUX is new unsigned_long;
type PHMUX is access all HMUX;
function DosCreateEventSem
(pszName : PSZ;
f_phev : PHEV;
flAttr : ULONG;
fState : BOOL32)
return APIRET;
pragma Import (C, DosCreateEventSem, Link_Name => "DosCreateEventSem");
function DosOpenEventSem
(pszName : PSZ;
F_phev : PHEV)
return APIRET;
pragma Import (C, DosOpenEventSem, Link_Name => "DosOpenEventSem");
function DosCloseEventSem
(F_hev : HEV)
return APIRET;
pragma Import (C, DosCloseEventSem, Link_Name => "DosCloseEventSem");
function DosResetEventSem
(F_hev : HEV;
pulPostCt : PULONG)
return APIRET;
pragma Import (C, DosResetEventSem, Link_Name => "DosResetEventSem");
function DosPostEventSem
(F_hev : HEV)
return APIRET;
pragma Import (C, DosPostEventSem, Link_Name => "DosPostEventSem");
function DosWaitEventSem
(F_hev : HEV;
ulTimeout : ULONG)
return APIRET;
pragma Import (C, DosWaitEventSem, Link_Name => "DosWaitEventSem");
function DosQueryEventSem
(F_hev : HEV;
pulPostCt : PULONG)
return APIRET;
pragma Import (C, DosQueryEventSem, Link_Name => "DosQueryEventSem");
function DosCreateMutexSem
(pszName : PSZ;
F_phmtx : PHMTX;
flAttr : ULONG;
fState : BOOL32)
return APIRET;
pragma Import (C, DosCreateMutexSem, Link_Name => "DosCreateMutexSem");
function DosOpenMutexSem
(pszName : PSZ;
F_phmtx : PHMTX)
return APIRET;
pragma Import (C, DosOpenMutexSem, Link_Name => "DosOpenMutexSem");
function DosCloseMutexSem
(F_hmtx : HMTX)
return APIRET;
pragma Import (C, DosCloseMutexSem, Link_Name => "DosCloseMutexSem");
function DosRequestMutexSem
(F_hmtx : HMTX;
ulTimeout : ULONG)
return APIRET;
pragma Import (C, DosRequestMutexSem, Link_Name => "DosRequestMutexSem");
function DosReleaseMutexSem
(F_hmtx : HMTX)
return APIRET;
pragma Import (C, DosReleaseMutexSem, Link_Name => "DosReleaseMutexSem");
function DosQueryMutexSem
(F_hmtx : HMTX;
F_ppid : PPID;
F_ptid : PTID;
pulCount : PULONG)
return APIRET;
pragma Import (C, DosQueryMutexSem, Link_Name => "DosQueryMutexSem");
function DosCreateMuxWaitSem
(pszName : PSZ;
F_phmux : PHMUX;
cSemRec : ULONG;
pSemRec : PSEMRECORD;
flAttr : ULONG)
return APIRET;
pragma Import (C, DosCreateMuxWaitSem, Link_Name => "DosCreateMuxWaitSem");
function DosOpenMuxWaitSem
(pszName : PSZ;
F_phmux : PHMUX)
return APIRET;
pragma Import (C, DosOpenMuxWaitSem, Link_Name => "DosOpenMuxWaitSem");
function DosCloseMuxWaitSem
(F_hmux : HMUX)
return APIRET;
pragma Import (C, DosCloseMuxWaitSem, Link_Name => "DosCloseMuxWaitSem");
function DosWaitMuxWaitSem
(F_hmux : HMUX;
ulTimeout : ULONG;
pulUser : PULONG)
return APIRET;
pragma Import (C, DosWaitMuxWaitSem, Link_Name => "DosWaitMuxWaitSem");
function DosAddMuxWaitSem
(F_hmux : HMUX;
pSemRec : PSEMRECORD)
return APIRET;
pragma Import (C, DosAddMuxWaitSem, Link_Name => "DosAddMuxWaitSem");
function DosDeleteMuxWaitSem
(F_hmux : HMUX;
F_hsem : HSEM)
return APIRET;
pragma Import (C, DosDeleteMuxWaitSem, Link_Name => "DosDeleteMuxWaitSem");
function DosQueryMuxWaitSem
(F_hmux : HMUX;
pcSemRec : PULONG;
pSemRec : PSEMRECORD;
pflAttr : PULONG)
return APIRET;
pragma Import (C, DosQueryMuxWaitSem, Link_Name => "DosQueryMuxWaitSem");
end System.OS2Lib.Synchronization;